package com.sg.dto.biz.bff.common;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;
import java.util.Objects;

/**
 * @desc BffUnstructuredRelationshipDto
 * @使用场景
 */
@Data
public class BffUnstructuredRelationshipDto implements Serializable {

    /**
     * 文档ID
     */
    @ApiModelProperty("文档ID")
    private String unstructuredDataId;

    /**
     * 文档编号
     */
    @ApiModelProperty("文档编号")
    private String unstructuredDataNumber;

    /**
     * 文档名称
     */
    @ApiModelProperty("文档名称")
    private String unstructuredDataName;

    /**
     * 文档后缀
     */
    @ApiModelProperty("文档后缀")
    private String postfix;

    /**
     * 文件大小
     */
    @ApiModelProperty("文件大小")
    private String fileSize;

    /**
     * 文件相对路径地址
     */
    @ApiModelProperty("文件相对路径地址")
    private String fileRelativePathAccess;


    /**
     * 文件全路径地址
     */
    @ApiModelProperty("文件全路径地址")
    private String fileRelativeAllPathAccess;

    /**
     * 文档明细类型 WORD:WORD文档 EXCEL:EXCEL文档 PDF:PDF文档
     */
    @ApiModelProperty("文档明细类型")
    private String unstructuredDataDetailType;

    /**
     * 是否支持预览 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否支持预览")
    private String isSupportPreview;

    /**
     * 是否来自个人网盘文件 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否来自个人网盘文件")
    private String isUserUpload;
    /**
     * 文档关系ID
     */
    @ApiModelProperty("文档关系ID")
    private String unstructuredDataRelationshipId;
    /**
     * 是否是网盘引用关系 TRUE:是 FALSE:否
     */
    @ApiModelProperty("是否是网盘引用关系")
    private String isNetworkReference;
    /**
     * 来源文档关系ID
     */
    @ApiModelProperty("来源文档关系ID")
    private String sourceRelationshipId;

    /**
     * 关系类型编码 DIRECT_RELATION:直接关系 INDIRECT_RELATIONSHIP:间接关系
     */
    @NotNull(message = "关系类型编码不能为空")
    @ApiModelProperty("关系类型编码")
    private String relationshipType;
    /**
     * 归属内容表主键ID
     */
    @ApiModelProperty("归属内容表主键ID")
    private String ownEntityId;

    /**
     * 归属父内容表主键ID
     */
    @ApiModelProperty("归属父内容表主键ID")
    private String ownParentContentId;

    /**
     * 主题内容ID
     */
    @ApiModelProperty("主题内容ID")
    private String themeContentId;
    /**
     * 排序
     */
    @ApiModelProperty("排序")
    private Long orderNumber;

    /**
     * 操作时间
     */
    @ApiModelProperty("操作时间")
    private Date operateTime;

    /**
     * 用户昵称
     */
    @ApiModelProperty("用户昵称")
    private String nickName;

    /**
     * 真实头像
     */
    @ApiModelProperty("真实头像")
    private String userFace;

    /**
     * 真实姓名
     */
    @ApiModelProperty("真实姓名")
    private String idCardName;

    /**
     * 冗余部门名称
     */
    @ApiModelProperty("冗余部门名称")
    private String deptShortName;
    /**
     * 部门ID
     */
    @ApiModelProperty("部门ID")
    private String deptId;

    /**
     * 创建人就职记录ID
     */
    @ApiModelProperty("创建人就职记录ID")
    private String createInductionId;
    /**
     * 创建时间
     */
    @ApiModelProperty("创建时间")
    private Date createTime;

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        if (!super.equals(o)) return false;
        BffUnstructuredRelationshipDto that = (BffUnstructuredRelationshipDto) o;
        return unstructuredDataId == that.unstructuredDataId && unstructuredDataNumber == that.unstructuredDataNumber && unstructuredDataName == that.unstructuredDataName && postfix == that.postfix && fileSize == that.fileSize && fileRelativePathAccess == that.fileRelativePathAccess && fileRelativeAllPathAccess == that.fileRelativeAllPathAccess && unstructuredDataDetailType == that.unstructuredDataDetailType && isSupportPreview == that.isSupportPreview && isUserUpload == that.isUserUpload && unstructuredDataRelationshipId == that.unstructuredDataRelationshipId && isNetworkReference == that.isNetworkReference && sourceRelationshipId == that.sourceRelationshipId && relationshipType == that.relationshipType && ownEntityId == that.ownEntityId && ownParentContentId == that.ownParentContentId && themeContentId == that.themeContentId && orderNumber == that.orderNumber && operateTime == that.operateTime && nickName == that.nickName && userFace == that.userFace && idCardName == that.idCardName && deptShortName == that.deptShortName && deptId == that.deptId && createInductionId == that.createInductionId && createTime == that.createTime;
    }

    @Override
    public int hashCode() {
        return Objects.hash(super.hashCode(), unstructuredDataId, unstructuredDataNumber, unstructuredDataName, postfix, fileSize, fileRelativePathAccess, fileRelativeAllPathAccess, unstructuredDataDetailType, isSupportPreview, isUserUpload, unstructuredDataRelationshipId, isNetworkReference, sourceRelationshipId, relationshipType, ownEntityId, ownParentContentId, themeContentId, orderNumber, operateTime, nickName, userFace, idCardName, deptShortName, deptId, createInductionId, createTime);
    }

}
